Field of the Disclosure
This disclosure relates generally to programming systems for byte-addressable persistent memory, and more particularly to systems and methods for improving performance for persistent transactions and reducing persist barriers within transactions.
Description of the Related Art
Persistent memory poses interesting challenges in that even though the technologies guarantee persistence, the rest of a system's memory hierarchy may be nonpersistent. As a result, allocating or deallocating memory using traditional nonpersistent memory allocators may not work—especially when failures occur. If a failure occurs, an allocation/deallocation's effects may have to be rolled back. Efficiently updating and persisting an allocator's metadata to persist the allocation/deallocation effects is nontrivial.
Additionally, Transactions are emerging as a viable programming interface to access and modify data hosted on byte addressable persistent memory dual in-line memory modules (DIMMS). The interactions between transactions and persist barriers that are required to persist writes involves various tradeoffs. Traditionally, transaction runtimes ignore the overhead associated with persist barriers.